.text
.global _start

.equ RCC_MP_AHB4ENSETR ,    0x50000A28
.equ GPIOE_MODER,           0x50006000
.equ GPIOE_OTYPER,          0x50006004
.equ GPIOE_OSPEEDR,         0x50006008
.equ GPIOE_PUPDR,           0x5000600C
.equ GPIOE_IDR,             0x50006010
.equ GPIOE_ODR,             0x50006014
_start:
    /*使能GPIOE时钟*/
    ldr r0, =RCC_MP_AHB4ENSETR
    ldr r1, [r0]
    orr r1, r1, #(1<<4) @按位或
    str r1, [r0]
    /* 配置GPIOE_10为输出模式*/
    ldr r0, =GPIOE_MODER
    ldr r1, [r0]
    bic r1, r1, #(3<<20)
    orr r1, r1, #(1<<20)
    str r1, [r0]
    /*配置为推挽输出*/
    ldr r0, =GPIOE_OTYPER
    ldr r1, [r0]
    bic r1, r1, #(1<<10)
    str r1, [r0]
    /*设置为低速模式*/
    ldr r0, =GPIOE_OSPEEDR
    ldr r1, [r0]
    bic r1, r1, #(3<<20)
    str r1, [r0]
    /*配置上下拉*/
    ldr r0, =GPIOE_PUPDR
    ldr r1, [r0]
    bic r1, r1, #(3<<20)
    str r1, [r0]
loop:
    ldr r0, =GPIOE_ODR
    ldr r1, [r0]
    orr r1, r1, #(1<<10)
    str r1, [r0]
    bl delay
    ldr r0, =GPIOE_ODR
    ldr r1, [r0]
    bic r1, r1, #(1<<10)
    str r1, [r0]
    bl delay
    
    b loop

delay:
	mov r0, #0x10000000
delay_loop:
	sub r0, r0, #1
	cmp r0, #0
	bne delay_loop
	
	mov pc, lr
